home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac-Source 1994 July
/
Mac-Source_July_1994.iso
/
C and C++
/
Libraries
/
TransSkel
/
Demos
/
Pascal Demos
/
Button
/
Dialog2.p
< prev
next >
Wrap
Text File
|
1994-02-23
|
2KB
|
107 lines
unit Dialog2;
interface
uses
TransSkel, ButtonGlobals;
procedure DoDialog2;
implementation
const
findItem = 1;
cancelItem = 2;
staticTextItem = 3;
editTextItem = 4;
outlineItem = 5;
var
defaultButton: Integer;
{--------------------------------------------------------------------}
{ Dialog 2 procedures }
{--------------------------------------------------------------------}
procedure OutlineButton (dlog: DialogPtr;
item: Integer);
begin
SkelDrawButtonOutline(SkelGetDlogCtl(dlog, defaultButton));
end;
procedure SetDefaultButton (dlog: DialogPtr;
item: Integer);
var
r: Rect;
begin
defaultButton := item;
SkelGetDlogRect(dlog, defaultButton, r); { get button rect }
InsetRect(r, -4, -4); { expand it }
SkelSetDlogRect(dlog, outlineItem, r); { use for outline item }
SkelSetDlogProc(dlog, outlineItem, @OutlineButton);
SkelDrawButtonOutline(SkelGetDlogCtl(dlog, defaultButton));
end;
procedure DoDialog2;
var
filter: ModalFilterProcPtr;
dlog: DialogPtr;
savePort: GrafPtr;
item: Integer;
newDefault: Integer;
str: Str255;
loop: Boolean;
begin
dlog := GetNewDialog(dlog2Res, nil, WindowPtr(-1));
if (dlog = DialogPtr(nil)) then
begin
SysBeep(1);
exit(DoDialog2);
end;
SkelPositionWindow(dlog, skelPositionOnMainDevice, horizRatio, vertRatio);
GetPort(savePort);
SetPort(dlog);
SetDefaultButton(dlog, cancelItem);
ShowWindow(dlog);
loop := true;
while (loop) do
begin
filter := SkelDlogFilter(nil, true);
SkelDlogDefaultItem(defaultButton);
SkelDlogCancelItem(cancelItem);
ModalDialog(filter, item);
SkelRmveDlogFilter;
if ((item = findItem) or (item = cancelItem)) then
loop := false
else
begin
SkelGetDlogStr(dlog, editTextItem, str);
if (length(str) > 0) then
newDefault := findItem
else
newDefault := cancelItem;
if (newDefault <> defaultButton) then
begin
SkelEraseButtonOutline(SkelGetDlogCtl(dlog, defaultButton));
SetDefaultButton(dlog, newDefault);
end;
end;
end;
DisposeDialog(dlog);
SetPort(savePort);
end;
end.